Since the birth of the computer age, processing resources, for example, in the form of processing bandwidth, have been at the heart of application processing. Thus, each application to be processed or executed by a processing element within a computer processor requires a certain amount of allocated bandwidth within which the application is processed. As the speed of application processing continues to increase, the need for available bandwidth becomes more crucial. Moreover, as the number of applications processed increases, as processor capabilities continue to increase, the limited amount of bandwidth available for processing applications becomes in greater demand. With a constant demand by consumers for higher performing computer processors, bandwidth allocation has continued to become a problem in system architecture design.
Conventional processing systems typically have no bandwidth allocation management capabilities. During operation, each processing element independently requests storage operations (e.g., data transfer), which utilize interconnect mechanisms and the shared resources of memory and input/output (IO). Thus, in a multi-processor conventional system, the processors may overload the shared resources by occupying all of the available processing bandwidth. Such a situation ultimately limits the performance throughput capabilities of the system. Typically, in conventional systems employing such practices, the queuing systems associated with the shared resources are operated at less than 60–70% utilization to ensure that the system achieves maximum throughput during operation.
Further increasing the problem of bandwidth allocation is the distinction between the types of applications being processed. More specifically, certain applications, such as real-time applications, typically require a consistent amount of bandwidth in order to be efficiently processed. Such real-time applications may include graphic applications processed during the play of some high resolution video games on a home computer system. For peak performance, real-time applications providing the video game's graphics during play typically require a consistently available allocation of bandwidth to provide the graphics in a real-time manner. Without a relatively large amount of bandwidth available on demand and on a consistent basis, the graphics of the video game may begin to lag as game play continues. As a result, applications that are not in need of processing on a real-time basis often occupy, at inopportune times, valuable bandwidth needed by real-time applications.
Therefore, although needed by certain applications over others at particular times, the allocation of bandwidth (i.e., shared resources) in conventional processors usually occurs in an on-demand basis. As such, no priority of applications is established, allowing non-real-time applications to snatch up bandwidth based primarily on order of processing. Thus, in computer systems running programs with real-time requirements (i.e., requiring predictable and repeatable behavior), the normal variation due to queuing delays, as well as congestion due to conflicts for resources, may be overwhelmingly prohibitive. Accordingly, what is needed in the art is a processing architecture having bandwidth allocation management capabilities for avoiding the deficiencies of conventional processing architectures.